package com.demo.java.OD201_250.OD209;

import java.util.*;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最优调度策略】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145907911
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        int n = s.nextInt(); // 用户的数量
        List<Map<Integer, Integer>> res = new ArrayList<>();

        // 读取每个用户的策略资源消耗
        for (int i = 0; i < n; ++i) {
            Map<Integer, Integer> map = new TreeMap<>();
            for (int j = 0; j < 3; j++) {
                map.put(s.nextInt(), j);  // 每个用户选择A、B、C三种策略及其资源消耗
            }
            res.add(map);
        }
        solveMethod(res);  // 调用方法计算最小的资源消耗
        s.close();
    }

    // 计算最小的资源消耗
    private static void solveMethod(List<Map<Integer, Integer>> res) {
        int sum = 0;  // 总资源消耗
        Integer type = -1;  // 初始化选择的策略类型

        // 遍历每个用户的资源消耗策略
        for (Map<Integer, Integer> map : res) {
            Integer resN = new ArrayList<>(map.keySet()).get(0);  // 获取当前策略资源消耗
            Integer typeN = map.get(resN);  // 获取当前用户选择的策略类型

            // 如果当前用户选择与前一个相同，资源消耗增加较少；否则增加前一个选择的资源消耗
            sum += (typeN.equals(type)) ? new ArrayList<>(map.keySet()).get(1) : resN;
            type = typeN;  // 更新当前用户的策略
        }
        System.out.print(sum);  // 输出最小资源消耗
    }
}